package com.xushuda.yas.storage;

/**
 * memSlice和permSlice实现的接口 可以被快速索引的存储
 * 
 * @author xushuda
 *
 */
public interface IdxStorage {

    // 不需要在SortedStorage中出现
    // /**
    // * 获取范围内所有数据不加版本控制 定义： k1和k2都是闭区间，需要正确处理空值， k1=k2=null 则取全部数据， k1=null则取headMap， k2=null则取tailMap 范围索引
    // *
    // * @param k1
    // * @param k2
    // * @return
    // */
    // public SortedMap<String, SeqData> range(String k1, String k2);

    /**
     * 随机访问
     * 
     * @param k
     * @return
     */
    public String find(String k, long currentSeqNo);

    /**
     * 范围索引 需要考虑版本控制
     * 
     * @param k
     * @param currentSeqNo
     * @return
     */
    public String[] findBetween(String k, long currentSeqNo);

    /**
     * 插入数据seqNo为版本号
     * 
     * @param k
     * @param v
     * @param seqNo
     */
    public void insert(String k, String v, long seqNo);

    /**
     * 判断key是否存在
     * 
     * @param k
     * @return
     */
    @Deprecated
    public boolean contains(String k, long currentSeqNo);

    /**
     * 删除数据
     * 
     * @param k
     * @param seqNo
     */
    public void remove(String k, long seqNo);

    /**
     * 更新数据
     * 
     * @param k
     * @param v
     * @param seqNo
     */
    public void update(String k, String v, long seqNo);

}
